package com.dtkeys.tags

import com.dtkeys.beans.Logs

/**
  * 4）设备：操作系统|联网方式|运营商
  * 下面是映射文件
  **
  *1	D00010001	Android
  *2	D00010002	IOS
  *3	D00010003	WIN
  *4	D00010004	其他
  *WIFI	D00020001	WIFI
  *4G	D00020002	4G
  *3G	D00020003	3G
  *2G	D00020004	2G
  *NETWORKOTHER	D00020005	其他
  *移动	D00030001	移动
  *联通	D00030002	联通
  *电信	D00030003	电信
  *OPERATOROTHER	D00030004	其他
  *
  */
object Tags4Device extends Tags{
  /**
    * 打标签的方法
    * 设备标签：
    * 1）设备操作系统
    * 2）设备联网方式标签
    * 3）设备运营商方案标签
    * @param args
    *          args0:Logs
    *          args1:Map[String,String]
    *          key:WIFI
    *          value: D00020001
    * @return
    *
    * //注意在Map中.get("4")获取到的值是Option类型，需要再次.get()拿到里面的值
    */
  override def makeTags(args: Any*): Map[String, Int] = {
    var map = Map[String, Int]()
    if (args.length > 1) {
      val log = args(0).asInstanceOf[Logs]
      val deviceDict = args(1).asInstanceOf[Map[String, String]]
      //操作系统标签
      //client 设备类型 （1：android 2：ios 3：wp）如果获取不到就是4类型，4就是其他的
      val os = deviceDict.getOrElse(log.client.toString, deviceDict.get("4").get)
      map += (os -> 1)
      //联网方式标签
      //networkmannername 联网方式名称，如果没有就给NETWORKOTHER代表 其他
      //val network = deviceDict.getOrElse(log.networkmannername, deviceDict.get("NETWORKOTHER").get)
      val network = deviceDict.getOrElse(log.networkmannername, deviceDict.getOrElse("NETWORKOTHER", "NETWORKOTHER_NA"))
      map += (network -> 1)
      //运营商的标签
      //val isp = deviceDict.getOrElse(log.ispname, deviceDict.get("OPERATOROTHER").get)
      val isp = deviceDict.getOrElse(log.ispname, deviceDict.getOrElse("OPERATOROTHER", "OPERATOROTHER_NA"))
      map += (isp -> 1)
    }
    map
  }
}
